﻿using System.Windows.Forms;
using System.Collections.Specialized;
namespace Kyoh.App.Renamer.Properties {
    
    
    // このクラスでは設定クラスでの特定のイベントを処理することができます:
    //  SettingChanging イベントは、設定値が変更される前に発生します。
    //  PropertyChanged イベントは、設定値が変更された後に発生します。
    //  SettingsLoaded イベントは、設定値が読み込まれた後に発生します。
    //  SettingsSaving イベントは、設定値が保存される前に発生します。
    internal sealed partial class Settings {
        
        public Settings() {
            // // 設定の保存と変更のイベント ハンドラーを追加するには、以下の行のコメントを解除します:
            //
            // SettingChanging += SettingChangingEventHandler;
            //
            // SettingsSaving += SettingsSavingEventHandler;
            //
        }

        public override void Upgrade()
        {
            if (this.IsUpgraded)
                return;
            base.Upgrade();
            base.Save();
            this.IsUpgraded = true;
        }

        private void SettingChangingEventHandler(object sender, System.Configuration.SettingChangingEventArgs e) {
            // SettingChangingEvent イベントを処理するコードをここに追加してください。
        }
        
        private void SettingsSavingEventHandler(object sender, System.ComponentModel.CancelEventArgs e) {
            // SettingsSaving イベントを処理するコードをここに追加してください。
        }

        internal static void LoadHistComboBox(ComboBox combo, StringCollection history)
        {
            combo.Items.Clear();
            if (history != null)
            {
                foreach (var item in history)
                {
                    if (item != null)
                    {
                        combo.Items.Add(item);
                        combo.AutoCompleteCustomSource.Add(item);
                    }
                }
                if (combo.Items.Count > 0)
                {
                    combo.SelectedIndex = 0;
                }
            }
        }

        internal static void SaveHistComboBox(ComboBox combo, string confKey)
        {
            var history = Default[confKey] as StringCollection;
            if (history == null)
            {
                Default[confKey] =
                history =
                    new StringCollection();
            }
            else
                history.Clear();

            foreach (var item in combo.Items)
                history.Add((string)item);
        }

        internal static void LoadHistComboBox(TextBox textBox, StringCollection history)
        {
            textBox.AutoCompleteCustomSource.Clear();
            if (history != null)
            {
                foreach (var item in history)
                    textBox.AutoCompleteCustomSource.Add(item);
                if (history.Count > 0)
                    textBox.Text = history[0];
            }
        }

        internal static void SaveHistComboBox(TextBox textBox, string confKey)
        {
            var history = Default[confKey] as StringCollection;
            if (history == null)
                Default[confKey] = history = new StringCollection();
            else
                history.Clear();

            foreach (var item in textBox.AutoCompleteCustomSource)
                history.Add((string)item);
        }

    }
}
